// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.

// 引入iPanel.Otlp.Model命名空间，其中包含OtlpSpan等相关OTLP模型类
namespace iPanel.Model;

/// <summary>
/// 该类表示用于显示跨度详细信息的视图模型。
/// 它封装了与跨度相关的各种属性和信息，以便在界面上展示。
/// </summary>
public sealed class SpanDetailsViewModel
{
    /// <summary>
    /// 获取或设置当前跨度详情对应的OTLP跨度对象。
    /// 该对象包含了跨度的基本信息，如名称、时间戳、状态等。
    /// </summary>
    public required OtlpSpan Span { get; init; }

    /// <summary>
    /// 获取或设置与跨度相关的遥测属性视图模型列表。
    /// 这些属性可以提供关于跨度的额外信息，如自定义标签、配置参数等。
    /// </summary>
    public required List<TelemetryPropertyViewModel> Properties { get; init; }

    /// <summary>
    /// 获取或设置与当前跨度相关的正向链接视图模型列表。
    /// 正向链接通常表示当前跨度指向其他跨度的关联关系。
    /// </summary>
    public required List<SpanLinkViewModel> Links { get; init; }

    /// <summary>
    /// 获取或设置与当前跨度相关的反向链接视图模型列表。
    /// 反向链接表示其他跨度指向当前跨度的关联关系。
    /// </summary>
    public required List<SpanLinkViewModel> Backlinks { get; init; }

    /// <summary>
    /// 获取或设置用于显示在界面上的标题信息。
    /// 该标题可以帮助用户快速识别当前跨度详情的主题。
    /// </summary>
    public required string Title { get; init; }

    /// <summary>
    /// 获取或设置与跨度相关的应用程序列表。
    /// 这些应用程序可能与跨度的产生、处理或关联有关。
    /// </summary>
    public required List<OtlpApplication> Applications { get; init; }
}
